Wenn sie an ihren Computer eine REU angeschlossen haben, konfiguriert geoDebugger sich selbst als Super-Debugger. Haben sie keine REU, dann lesen sie bitte im Kapitel 9 die Referenz des Mini-Debugger nach.
Dieses Kapitel enth{lt die komplette Referenz }ber die Super-Debugger Konfiguration. Dabei werden alle Aspekte des Super-Debugger's behandelt, wie Symbole, Ausdr}cke, Breakpoints und Makros sowie genaue Beschreibungen. Obwohl dies in erster Linie ein Referenz Kapitel ist, lesen sie am besten das ganze Kapitel durch. Um einen allgemeinen ]berblick und Informationen }ber die Verwendung des Super-Debugger's vom Desktop aus zu erhalten, sehen sie bitte in Kapitel 7 nach.
HSpezielle Zeichen
Wie beim geoAssembler, veranlassen einige Tastatureingaben bestimmte Symbole und Zeichen. Da der StandardTextModus der vom Super-Debugger benutzt wird, die Zeichen ungef{hr (tilde ) und den Circumflex (^), Pfund ( ) und das Pfeil ( ) Zeichen nicht darstellen kann. Um diese speziellen Zeichen mit dem Super-Debugger einzugeben, benutzen sie folgende Tasten:
Unterstreichen _
+ (Fragezeichen)
V-bar l
Pfund Zeichen Pfund ~
(ersetzt - -)
up-arrow ^ (shift + pfundtaste)
(ersetzt ^)
HSuper-Debugger Ausdr}cke
Der Super-Debugger Editor stellt einige spezielle M|glichkeiten, Symbole und Operationen zur Verf}gung, die zur Debugger Umgebung geh|ren, aber auch identisch mit denen im Editor unter geoAssembler sind. In den meisten F{llen werden in diesem Kapitel nur die Unterschiede zwischen diesen beiden Editoren aufgezeigt. Mehr Informationen }ber den geoAssembler Editor finden sie im Kapitel 5 'Expressions'.
@anze Zahlen
Der Super-Debugger Editor, wie der geoAssembler Editor, arbeitet mit dezimalen, hexadezimalen, oktalen oder Zeichen-Zahlen. Der Super-Debugger erm|glicht die Zahlensystembasis zu {ndern. In geoAssembler ist die Zahlensystembasis dezimal und kann nicht ge{ndert werden; bei der Verwendung eines anderen Zahlensystems m}ssen spezielle Symbole vorangestellt werden, solche wie
bei Hexzahlen. Beim Super-Debugger kann die vorgegebene Zahlensystembasis entweder hexadezimal oder dezimal sein. Da meistens hexadezimal debuggt wird, interpretiert der Super-Debugger alle Zahlen ohne vorangestelltes Symbol als Hexzahlen. Durch die Eingabe des
@opt
Kommandos kann die Vorgabe in dezimal ge{ndert werden, wie im geoAssembler. Unabh{ngig von der Vorgabe k|nnen sie jeder Zahl das spezielle Symbole voranstellen.
dezimal: Ein Punkt gefolgt von dezimalen Zahlen (0-9). Ist das Dezimalsystem vorgegeben, ist der Punkt
optional.
hexadezimal: Ein Dollarzeichen (
) gefolgt von hexadezimalen Zeihen (0-9, A-F). Das Dollarzeichen ist optional,
wenn das Hexsystem vorgegeben ist. Beispiel:
@$4F9C
oktal: Ein Fragezeichen (?) gefolgt von Oktalzahlen (0-7). Beispiel: ?
@01717
bin{r: Das Prozentzeichen (
) gefolgt von Bin{rzahlen (0,1). Beispiel:
@%110101110
Zeichen: Einzelne ASCII-Zeichen eigeschlossen in einfachen Anf}hrungszeichen ('). Das Zeichen wird in einen
16-Bit-Wert, mit Hi-Byte 0 konvertiert. Beispiel: '
Hinweis: Sind HexWerte vorgegeben, so sind einige Eigenheiten zu beachten. Erstens, wenn sie Code assemblieren, wie
oder
@lsr a
, wird dieser als Akku Adressierungsmode interpretiert zu
; benutzen sie zur Sicherheit das
Symbol. Zweitens, vermeiden sie Symbole die wie Hex-Werte aussehen (z.B FED, AAA, ABC); sie werden als Hex-Werte interpretiert, bis sie die Vorgabe in dezimal {ndern.
@Symbolnamen
Alle m|glichen Symbole der Super-Debugger Symboltabelle k|nnen in Ausdr}cken verwendet werden. Bei der Auswertung werden die Ausdr}cke durch ihre absoluten Werte ersetzt. Symbole k|nnen in die Symboltabelle eingegeben werden, indem man .dbg symbol file (erstellt von geoLinker) l{dt, oder durch die Eingabe von Hand (z.B. mit dem
@sym
Kommando).
Anders als in geoAssembler, werden Symbole im Super-Debugger nicht durch die Gro~- und Kleinschreibung unterschieden. D.h.,
@mouseon
(kleingeschrieben), kann genauso
@mouseON
oder
@Mouseon
(Klein- und Gro~schreibung gemischt) geschrieben werden; es wird nicht zwischen gro~- und kleingeschriebenen Buchstaben unterschieden. Beim experimentieren hat sich gezeigt, da~ dadurch die Eingabe und die Manipulation des Debugger erleichtert wird. Wenn sie Symbole verwenden wollen, die sich durch Gro~/Kleinschreibung unterscheiden sollen, k|nnen sie dies durch das
@opt
Kommando erreichen.
@Prozessor Register
Mit dem Super-Debugger Editor k|nnen sie sich jederzeit die sechs aktuellen Werte des Proze~orregisters und das Commodorekonfigurationsregister ansehen. Die Register werden nach der Eingabe von
einem Punkt (.) und einem Buchstabencode angezeigt.
@r.a
accumulator (ein Byte)
@r.x
X-Index (ein Byte)
Y-Index (ein Byte)
r.st
Prozessorstatus (ein Byte)
r.pc
Programmz{hler (zwei Bytes)
Stackpointer (zwei Bytes)
(Hinweis: obwohl der Stackpointer ein Ein-Byte Index in der Zeropage ist, ist die Zahl die durch den r.sp Befehl angezeigt wird ein Zwei-Byte-Wert, der auf die Spitze des Stacks zeigt.)
r.mm
Commodore-konfigurationsregister (ein Byte)
Das einzige Nicht-Standard-Register ist das Commodore-konfigurationsregister (memory map). Der Wert ist nicht der eines 6502 Registers, ist aber nicht weniger wichtig. Es zeigt den Wert der Speicherstelle
@$0001
und die Speicherkonfiguration (Bankswitching) an. Weitere Informationen }ber die Auswertung des Wertes finden sie im
@Commodore 64 Programmer's Reference Guide.
@Status Register Flags
Zus{tzlich zur M|glichkeit den Prozessorstatus in einem Byte auszugeben (mit
@r.st
), k|nnen auch die einzelnen Flags (Bits) des Registers ausgegeben werden. StatusregisterFlags werden mit
ausgegeben, einem Punkt (.) und einem Zeichen f}r das entsprechende Flag:
@f.n
NegativFlag
OverflowFlag
@f.b
BreakFlag
@f.d
DezimalFlag
@f.i
Interrupt
@f.z
ZeroFlag
@f.c
CarryFlag
@Alle Flags sind entweder eins (wahr) oder null (falsch).
@User und SystemVariablen
Es gibt zehn UserVariablen und vier Systemvariablen, die in Ausdr}cken benutzt werden k|nnen. Diese Variablen werden durch ein
eingeleitet, dann folgt ein Punkt (.) und ein Code f}r die Variable:
User Variablen
@u.0
user variable 0
@u.1
user variable 1
user variable 2
user variable 3
user variable 4
user variable 5
user variable 6
user variable 7
user variable 8
user variable 9
System Variablen
@u.lc
location Z{hler: weist auf die zuletzt benutzte Speicherstelle
@u.ws
Window Gr|~e: absolute Anzahl der anzeigbaren Bildschirmzeilen
@u.wc
Window Z{hler: die absolute Anzahl der angezeigten Zeilen seit der letzten User-Eingabe; dies kann
i.V. mit
@u.ws
benutzt werden um festzustellen wenn der Bildschirm voll ist
@u.fn
aktueller Wert von
@for
des Makroschleifenz{hlers
@Wichtig:
[ndern sie den Wert von
@u.ws
(Windowgr|~e) kann dies zu unvorhersehbaren Ergebnissen f}hren. Momentan ist der Wert konstant 24, kann sich aber zuk}nftig {ndern.
@Operatoren
Die Operatoren im Super-Debugger Editor sind die gleichen wie im geoAssembler, mit Ausnahme von drei neuen Operatoren und zwei anders dargestellten. (Die Darstellung des geoAssembler
@ungef{hr
@Circumflex
Operators wurden im Super-Debugger ge{ndert, da das
@Ungef{hr
und
@Circumflex
Zeichen im Commodore TextModus nicht dargestellt werden k|nnen.) Die folgende Tabelle zeigt alle erlaubten Operatoren und ihre Wertigkeiten (Vorrang). Operatoren mit einem
am linken Rand existieren nur im Super-Debugger, Operatoren mit einem
@Doppelte
am linken Rand existieren in beiden, im Super-Debugger und geoAssembler, aber werden durch verschiedene Zeichen dargestellt.
Operator
Wertigkeit
() 1 gruppierende Klammern (Unterausdr}cke)
- 2
unary
Negation
! 2 logical not
t Pfund 2 bitwise Einerkomplement
< 2 Low-Byte
> 2 High-Byte
tt @ 2 Byte
lookup
an der Adresse
tt @@ 2 low/high
lookup
an der Adresse
tt @# 2 L{nge der 6502 Anweisung an der Adresse
** 3 Potenz
* 4 Multiplikation
/ 4 Division
// 4
modulus
+ 5 Addition
- 5 Subtaktion
>> 6 logisches rechts verschieben
<< 6 logisches links verschieben
> 7 logisches gr|~er als
>= 7 logisches gr|~er als oder gleich
< 7 logisches kleiner als
<= 7 logisches kleiner als oder gleich
== oder = 8 logisches gleich
!= 9 logisches nicht gleich
& 9 bitwise and
t ^ 10 bitwise exklusiv-or (xor)
| 11 bitwise inklusiv-or (ora)
@@ 12 logisches and
t ^^ 13 logisches exklusiv-oder
|| 14 logisches inklusiv-oder
@Operator: @ (Klammeraffe)
Bytedarstellung dieser Adresse. Dieser Operator holt einen Wert aus dem Applikations-Speicher und zeigt den ByteWert dieser Adresse.
Beispiel:
@@$3000
zeigt den ByteWert der in Adresse $3000 abgelegt ist
@@my_sym
angenommen
@my_sym
ist in der Systemtabelle definiert, zeigt den ByteWert der Speicherstelle
auf die
@my_sym
zeigt.
@@(r.sp+1)
das oberste Byte auf dem Stack. (zur Erinnerung: der SP Pointer zeigt auf das n{chste verf}gbare
Byte, nicht das gerade geschobene Byte, wir addieren eins um dies auszugleichen).
@Operator: @@
Lo/Hi Word anzeigen. Dieser Operator holt Werte aus dem Applikationen's Speicher und zeigt das Lo/Hi Word in diesen Adressen.
@@@$3000
zeigt die Word-Werte die in den Adressen $3000 und $3001 gespeichert sind; das Byte in $3000
wird als Lo-Byte und das Byte in $3001 wird als Hi-Byte benutzt.
@@@ my_sym
angenommen
@my_sym
wurde in der Symboltabelle definiert, so sind die Word-Werte diejenigen
die in den Speicherstellen
@my_sym
@ my_sym+1
gespeichert sind; das Byte in
@my_sym
das Lo-Byte und das Byte in
@my_sym+1
ist das Hi-Byte.
@@(@@jump)
angenommen
@jump
ist in der Symboltabelle definiert, zeigt das Byte auf das indirekt durch die Lo,
Hi-Adresse in
@jump
gezeigt wird.
@Operator @#
Berechnung der L{nge von Anweisungen. Dieser Operator gibt die L{nge (in Bytes) der 6502-Anweisung der angesprochenen Adresse aus dem Applikationen's Speicher aus. Steht an der Adresse unzul{ssiger Opcode so wird Null ($0000) angezeigt.
Beispiele:
@@#$3000
gibt die L{nge der 6502 Anweisung aus die bei
3000 beginnt.
@@#my_prg
angenommen
@my_prg
wurde in der Symboltabelle definiert, dann wird die L{nge der
6502-Anweisung ausgegeben die an der Adresse
@my_prg
beginnt.
Die noch verbleibenden Operatoren sind identisch mit denen des geoAssembler's. Informationen finden sie im Kapitel 5 'Operators'.
Basis Operationen
@Bereitschaftszeichen (
Command prompt)
Das geoProgrammer Bereitschaftszeichen ist das Gr|~er-als-Zeichen (>) in der linken unteren Ecke des Bildschirms. Immer wenn das Bereitschaftszeichen angezeigt wird, ist geoProgrammer bereit und erwartet eine Eingabe. Sie k|nnen nun Befehle eingeben. Folgende Tastatureingaben k|nnen sie in diesem Modus benutzen.
@RETURN
}bergibt die aktuelle Zeile; der Super-Debugger beginnt mit der Auswertung und arbeitet den Befehl ab
@DEL
l|scht das Zeichen links vom CSR
-- l|scht die aktuelle Eingabezeile
gibt in der Zeile den zuletzt benutzten Befehl aus, dadurch kann der Befehl editiert werden und mit
@RETURN
neu }bergeben werden. Das Komma mu~ das erste Zeichen in der Eingabezeile sein.
. Wiederholt den letzten Befehl. Dies entspricht der Eingabe des
Befehls. Der Punkt mu~ das erste
Zeichen in der Eingabezeile sein.
@'Hot-key' Eingabe und Abbruch
Wurde ihr Programm gestartet, ist die
@RESTORE
-Taste als 'hot-key' aktiv; dr}cken sie die Taste, wird abgebrochen und in den Debugger gewechselt. Befinden sie sich im Super-Debugger, so bricht
@RESTORE
den Befehl oder das Makro ab und kehrt zum Bereitschaftszeichen zur}ck. Wegen einer Beschr{nkung in der Tastatur ihres Computers, kann es sein, da~ sie die
@RESTORE-
Taste mehrmals dr}cken m}ssen, bis sie eine Wirkung erzielen.
@Das 'more' Bereitschaftszeichen
Die Bildschirm Ausgaberoutinen (screen print routine monitors)
@u.ws
(WindowGr|~e) und
@u.wc
(WindowZ{hler) Systemvariablen. Jedesmal wennn eine Zeile ohne R}ckkehr zum Bereitschaftszeichen ausgegeben wird, erh|ht sich die Z{hlvariable. Wenn die Z{hlvariable die WindowGr|~e }berschreitet, ist der Bildschirm voll mit Text; die Ausgaberoutine stellt dies fest und pausiert, zeigt ein 'more' Bereitschaftszeichen an und erwartet Eingaben ehe fortgefahren wird. Beim Bereitschaftszeichen k|nnen sie jetzt die Space Taste d}cken, um wieder einen Bildschirm f}r Text zu erhalten oder sie k|nnen
@RETURN
dr}cken um eine zus{tzliche freie Zeile zu erhalten.
@SPACE
ganzer Bildschirm f}r Text
@RETURN
eine zus{tzliche Zeile
@GEOS Applikation's Bildschirm einsehen
Sie k|nnen jederzeit zwischen dem Debugger TextBildschirm und dem GEOS Applikation's Hires Bildschirm hin- und herschalten, indem sie
dr}cken. Zum DebuggerBildschirm k|nnen sie zur}ckkehren indem sie irgendeine Taste dr}cken.
@EnterDeskTop Vector Trap
geoDebugger setzt einen permanenten Breakpoint im GEOS
@EnterDeskTop
Vektor. Wenn eine Applikation abzubrechen versucht, indem sie
@EnterDeskTop
aufruft, wird folgendes ausgegeben:
*** EnterDeskTop vector encounterd ***
C22C EnterDes >brk
Wenn geoDebugger abl{uft, kann eine Applikation nicht direkt verlassen werden. geoDebugger mu~ erst zur}ckkehren, um ordnungsgem{~ zum Desktop zur}ckzukehren zu k|nnen. Um zum Desktop zur}ckzukehren benutzen sie das Super-Debugger Kommando
@quit.
H]bersicht Super-Debugger Befehle
Allgemeine Befehle
quit verl{~t den geoDebugger und kehrt zum Desktop zur}ck
opt Super-Debugger Konfigurationsoptionen
Allgemeine Bildschirmanzeige-Befehle
r Anzeige der Prozessorregister
dump Anzeige eines Speicherblocks im Hex- und ASCII-Format
n Disassembliert Code beim Programmz{hler (davor und dahinter)
w Code in einem Window vom Programmz{hler abw{rts, disassemblieren.
dis Einen ganzen Bildschirm Code disassemblieren.
print Drucken von Werten, Symbolen und Ausdr}cken.
OpenModus (Register und Speicher }berpr}fen und modifizieren
a Speicher anzeigen in Form von MaschinenspracheCode.
m Speicher anzeigen in Form von Daten.
reg Statusregister anzeigen.
flag Flags und Statusregister anzeigen.
Abarbeitungsbefehle
go Abarbeitung in normaler Geschwindigkeit.
runto Breakpoint setzen und go.
jsr Unterroutine bei Adresse abarbeiten.
s In Einzelschritten durch die aktive Ebene und Unterroutinen.
t In Einzelschritten durch die aktive Ebene und 'top-step' durch die Unterroutinen.
p Abarbeitung in normaler Geschwindigkeit bis zum Breakpoint.
next Abarbeiten bis die n{chste Anweisung erreicht wird (zum Verlassen von Schleifen).
loop Abarbeiten der kompletten Schleife.
skip Die aktuelle Anweisung }berspringen, nicht abarbeiten.
stopmain Stopmain; Abarbeiten in der GEOS
@MainLoop
stoppen.
Stack bezogene Befehle
stack Die obersten 8 Bytes des Stack anzeigen.
history Anzeigen des aktuellen 'step-through-jsr history'.
finish Die zuletzt aufgerufene Unterroutine, in die man im Einzelschrittmodus gesprungen ist, zu Ende
abarbeiten.
return Abarbeiten bis man aus der Unterroutine zur}ckkehrt.
Breakpoint Befehle
b Breakpoints anzeigen.
setb Einen Breakpoint setzen.
clrb Breakpoint l|schen.
initb Breakpointtabelle initialisieren und dabei alle l|schen.
Symbol Befehle
sym Anzeige der Symbole.
setsym Definition eines Symbols.
clrsym L|schen eines Symbols.
initsym Initialisieren (l|schen) von Symbolen aus dem aktiven Modul.
mod Anzeige der Symbolpriorit{t von nachladenden (overlay) Modulen.
setmod Symbolpriorit{t von nachladenden (overlay) Modulen setzen.
initmod Die Symbolpriorit{tstabelle von nachladendbaren (overlay) Modulen initialisieren.
Makro Befehle
sysmac Anzeige der SystemMakros.
mac Anzeige benutzerdefinierter Makros.
setmac Makros definieren.
clrmac Benutzerdefinierte Makros l|schen.
initmac Initialisieren (l|schen) von benutzerdefinierten Makros.
poff Drucker aus.
pon Drucker ein.
if Bedingung
for Schleife
stop Makrodurchf}hrung stoppen und zum Bereitschaftszeichen zur}ckkehren.
Speicher Befehle
find Finden einer Zeichenkette im Speicher.
fill Speicher f}llen mit Zeichen.
copy Einen Speicherblock kopieren.
diff Zwei Speicherbl|cke kopieren.
Spezielle Befehle
setu Benutzervariablien definieren.
pc Programmz{hler einsehen und setzen.
rboot GEOS rbooten.
Disketten Befehle
drivea Floppy A initialisieren.
driveb Floppy B initialisieren.
disk Anzeige des Disknamens der Diskette der aktiven Floppy.
dir Directory der Diskette in der aktiven Floppy.
getb Block der Diskette der aktiven Floppy einlesen.
pub Block auf Diskette der aktiven Floppy }bertragen.
getchain Logische Folge von Blocks der aktiven Floppy auslesen.
dumpd Anzeigen des DiskettenBuffers im Hex-,ASCII Format
HSyntax Schreibweise
Die folgenden Vorgaben werden bei der Syntax-Beschreibung der Super-Debugger Befehle benutzt. Viele Schreibweisen werden ihnen vom geoAssembler und geoLinker vertraut sein.
ein zugelassener Ausdruck
string
ein String aus ASCII-Zeichen in Anf}hrungszeichen
symbol
ein zugelassener geoAssembler Typ Symbolname
macname
ein Makro oder SystemMakro(Befehl)name
range
beschreibt
einen Bereich von Werten in folgender Form
ein einziger Wert (ein Bereich von einem)
exp:exp
ein Start/Ende Bereich (Bereich vom 1. bis zum 2. Wert zeigt den Lo-Wert zuerst)
Beispiel: $1000:$2000 Bereich von $1000 bis $2000
exp:# exp
ein Start/Z{hl Bereich (Bereich vom ersten Wert bis zum Z{hlwert, dem zweiten Wert)
Beispiel: Buffer: #.200 Bereich von der Adresse Buffer bis Buffer+.200
searchspec
beschreibt eine Suchfunktion
f}r Labels
und Makronamen. Ein
searchspec
wird aus zul{ssigen
Zeichen aufgebaut (Zahlen, Zeichen, Buchstaben) und dem ? und * 'wildcards'. Ein ? irgendwo
searchspec
stellt ein Zeichen dar, und ein * stellte eine beliebige Zahl von Zeichen dar.
Beispiel:
@symb *
findet folgende:
@symbol1, symbol2, symbol-3er
@symbat.
Beispiel:
@??mbo*
findet folgende:
@symbol1, symbol2
@ rambo 86.
Beispiel: ???? findet alle Namen mit genau 4 Zeichen.
breakcond
beschreibt einen bedingten Breakpoint in einer der folgenden Formen:
ein Z{hler. Jedesmal wenn der Breakpoint aufgerufen wird, Z{hler dekrementieren; ist er Null ist, wird er
ausgel|st.
Beispiel:
passiert den Breakpoint 4 mal; beim f}nften Mal wird er ausgel|st.
=exp
eine Bedingung. Der Ausdruck wird jedesmal ausgewertet, wenn der Breakpoint angesprungen wird; der
Break wird nur ausgewertet, wenn der Ausdruck wahr ist.
Beispiel: =(
@r.x > 30)
passiert den Breakpoint solange bis das X-Register 30 ist.
exp,=exp
Kombination von Z{hler und Bedingung. Jedesmal beim Aufruf des Ausdrucks wird der Ausdruck
ausgewertet. Wenn die Bedingung wahr ist wird der Z{hler herabgez{hlt. Ein Break wird ausgel|st
wenn der Z{hler Null wird.
Beispiel:
@3,=(f.c && @cmd==4)
}berspringt den Breakpoint bis das Carry Flag gesetzt wird und die Variable
@cmd
gleich vier ist; ist dies dreimal passiert, wird ein Breakpoint ausgel|st.
l l eckige Klammern zeigen ein optionales Element an, das einmal eingegeben oder weggelassen werden kann
( ) geschwungene Klammern zeigen ein optinales Element das einmal eingegeben oder weggelassen werden
kann
l ein senkrechter Strich zeigt eine Auswahlm|glichkeit dar und kann als 'oder' angesehen werden
Zus{tzlich werden alle Beispiele aus dem Super-Debugger in
@bold courier
ausgedruckt, so da~ die Ausgabe dem Standard Commodore Textmodus entspricht.
HAllgemeine Befehle
Befehl:
@quit
Synonym:
@exit, q, e
Mini: siehe
in Kapitel 9.
Zweck: Super-Debugger verlassen und zum GEOS Desktop zur}ckkehren
Anwendung:
@quit
Hinweis: keine Paramter
@quit
verl{~t man den Super-Debugger und kehrt zum GEOS Desktop zur}ck, indem er sich selbst disassembliert und einen Standard Applikation Austritt veranla~t (ruft
@EnterDesktop
auf). Der Programmspeicher wird gel|scht und alle Debugger Symbole und Makros sind verloren. Wenn GEOS w{hrend der Debugger Anwendung verf{lscht wurde (Ver{nderungen im Bereich $C000 bis $A000), bringt
@quit
das System wahrscheinlich zum Absturz, so da~ sie nur noch abschalten k|nnen und das System neu starten m}ssen. Benutzen sie den
@rboot
Befehl um den Super-Debugger zu verlassen, wenn sie annehmen, das GEOS ver{ndert wurde.
Bevor sie den Super-Debugger wirklich verlassen k|nnen, erhalten sie die M|glichkeit ihre Eingabe r}ckg{ngig machen:
Exit to desktop (y/n)?
Geben sie
ein verlassen sie das Programm; geben sie
ein oder ein anderes Zeichen, so kehren sie zum Bereitschaftszeichen zur}ck.
setBefehl:
Mini: siehe
@g0 und g1
in Kapitel 9.
Zweck: Super-Debugger Optionen setzen.
Anwendung:
@opt
(optnum) l l(optnum,setting)
Hinweis:
optnum
ist ein Ausdruck der eine zul{ssige Optionsnummer (0-6) abarbeitet,
setting
ist ein Ausdruck,
der eine zugeh|rige Setznummer dieser Option aufruft (0 oder 1).
Es gibt sieben Super-Debugger Optionskonfigurationen:
Option Settings
0 Eingabezahlensystem 0 hexadezimal (Vorgabe)
1 dezimal
1 Ausgabezahlensystem 0 hexadezimal (Vorgabe)
1 dezimal2 Labels 0 aktiv (Vorgabe)
1 inaktiv
3 Offsetzahlensystem 0 hexadezimal (Vorgabe)
1 dezimal
4 Unterscheidung Gro~- 0 aktiv (Vorgabe)
Kleinschreibung
1 inaktiv
5 GEOS Bildschirm 0 aktiv (Vorgabe)
1 inaktiv
6 Makroauswertung 0 aktiv (Vorgabe)
1 inaktiv
@Input radix (0).
(Eingabezahlensystem). Das Eingabezahlensystem ist die vorgegebene Zahlenbasis die in Ausdr}cken verwendet wird. Wurde hexadezimal gew{hlt, ist die Eingabe des
Zeichens vor der Hex-Zahl, optional; ist dezimal gew{hlt, ist die Eingabe des
Zeichens vor der Dezimal-Zahl optional.
@Output radix (1).
(Ausgabezahlensystem). Die Befehle
@print
benutzen das Ausgabezahlensystem und der
Befehl, bei der Ausgabe disassemblierter Daten. Das zugeh|rige Zahlensystemsymbol wird immer mit den Zahlen ausgedruckt.
@Label (2)
. Wenn Labels ausgeben ausgew{hlt ist, werden die disassemblieren und DatenanzeigeBefehle, wie mit dem
und
Befehl, als Label plus Offset zur absoluten CodeAdresse und Speicheradresse angezeigt. Wenn Labels nicht ausgeben ausgew{hlt ist, werden die Hex-Byte-Werte ausgegeben. Siehe auch:
und
@Offset Zahlensystem (3)
. Zahlen die als Offsets von Symbolen ausgegeben werden erscheinen als Symbol +xxx, wobei
@Symbol
ein Symbolname und xxx ein Ein-Byte-Offset ist. Der Offset kann entweder dezimal oder hexadezimal angezeigt werden. Ist das Offsetzahlensystem hexadezimal, wird ein
Zeichen der Zahl vor- angestellt; ist das Offsetzahlensystem dezimal, wird kein Zahlensystemvorzeichen angezeigt.
@Gro~- Kleinschreibung (4).
Ist die Unterscheidung der Gro~/Kleinschreibung nicht angew{hlt, k|nnen Ausdr}cke ohne R}cksicht auf Gro~/Kleinschreibung eingegeben werden, wie im geoAssembler. Ist die Unterscheidung angew{hlt, mu~ dies auch genau beachtet werden. Weitere Informationen finden sie im Kapitel 'Symbol Names'.
@GEOS Bildschirm (5).
Wenn GEOS
Bildschirm,
w{hrend des Abarbeitens von Code,
angew{hlt ist, wie bei
@s, t
@ next
des Super-Debugger's, wird der Applikation's Bildschirm angezeigt. Wenn GEOS Bildschirm nicht angew{hlt ist, wird der Applikation's Bildschirm nur angezeigt, w{hrend
@runto
oder wenn
gedr}ckt wurde.
@Expand (Auswerten) von Makros (6).
Wenn 'Makros auswerten' angew{hlt ist, wird die Abarbeitung der Makros am Bildschirm angezeigt. Dadurch haben sie einen ]berblick }ber die Makroaktivit{ten.
@opt im OpenModus
Der direkte Weg Optionen zu {ndern ist, die Eingabe von
@opt
ohne Parameter. Der Super-Debugger |ffnet die zuletzt ge|ffneten Optionen und erlaubt ihnen die Werte wechselwirkend zu {ndern. Wenn
@opt
im Openmodus ist wird folgendes angezeigt:
option
Nummer Optionsbeschreibung wirksame Option
opt0 Eingabezahlensystem: * (0) hexadezimal
Wenn eine Option angew{hlt wurde, }berpr}ft der
@opt
Befehl die Tastatureingaben und }bertr{gt sie in den entsprechenden Level. Vier Tastatureingaben haben in diesem Modus Auswirkungen:
SPACE zeigt momentan gesetzte Optionen
0 setzt Optionen auf 0
1 setzt Optionen auf 1
SHIFT + CSR momentane Option schlie~en und vorhergehende Option |ffnen
CSR momentane Option schlie~en und zum Bereitschaftszeichen zur}ckkehren
Mit der CSR-Taste scrollt man durch die Option, mit SPACE k|nnen sie nach Wunsch ge{ndert werden.
Um eine bestimmte Option zu |ffnen, geben sie
gefolgt von der Optionsnummer (0-6) ein.
@opt 4
\ffnet die Option vier (Ber}cksichtigung Gro~-, Kleinschreibung). Alle Openmodus Tasten sind aktiv.
@Nutzung von opt ohne Openmodus
Sie k|nnen eine Option {ndern indem sie die betreffende Option mit der Nummer aufrufen, mit der Befehls}bergabe. Z.B.
@opt 0,1
setzt das Ausgabezahlensystem auf dezimal (auf 1 setzen)
HAnzeige Befehle
Befehl:
Mini: siehe
in Kapitel 9.
Zweck: zeigt Prozessorregister an.
Anwendung:
Hinweis: keine Parameter.
Befehl zeigt alle Prozessorregister, inclusive MM (memory map) Pseudoregister. Im folgenden Format wird ausgeben:
Acc X Y PC SP NV-BDIZC MemMap
$00 $00 $00 $0400 $FF 100111011001 0011001100
Der Akkumulator (Acc), X-Register(X), Y-Register(Y), und Stackpointer (SP), alle werden als Ein-Byte Hexadezimal-Werte ausgegeben. Der Programmz{hler (PC) ist ein Zwei-Byte Hexadezimal-Wert. Das Prozessorstatusregister ist ein Ein-Byte Bin{r-Wert. Die NV-BDIZC Notierung }ber den Bits benennt die einzelnen Flags der Statusregisters; eine Eins Bedeutet das Flag ist gesetzt, eine Null bedeutet nicht gesetzt. Das MemoryMapRegister ist ein Ein-Byte-Wert.
Weitere Informationen finden sie in der Literatur }ber Maschinensprache.
Sehen sie auch nach bei
@reg
Befehl:
@dump
Mini: siehe
im Kapitel 9.
Zweck: dumpt 128(
) Bytes auf dem Bildschirm, hexadezimal und in ASCII.
Anwendung:
@dump
Hinweis:
ist die Startadresse f}r den Dump. Der Wert des aktuellen Standortz{hlers (
@u.lc
) wird benutzt,
wenn keine Adresse festgelegt wird.
@dump
wird benutzt um 128 Bytes Speicher auf einmal anzuzeigen. Der ganze Bildschirm wird zur Informationsanzeige benutzt, dies ist besonders n}tzlich, wenn man sich Tabellen und Buffer ansehen will. 128 Bytes werden gedumpt, acht Bytes je Zeile. Die erste Adresse jeder Zeile wird am linken Rand ausgegeben, gefolgt von acht Daten Bytes (entsprechend mit 0 bis 7 Offsets), gefolgt von acht ASCII-Zeichen. Hinweis: Wenn ein Zeichen nicht am Bildschirm ausgegeben werden kann, wird es als Punkt dargestellt.
@siehe Handbuch
Befehl:
Zweck: disassembliert Code beim aktuellen Programmz{hler. Zeigt f}nf Zeilen an; zwei vor dem
Programmz{hler liegende gefolgt von drei weiteren, die die Zeile beinhaltet, auf die der
Programmz{hler zeigt.
Anwendung:
Hinweis: keine Parameter.
Befehl disassembliert den Code unmittelbar vor und hinter dem Programmz{hler. Es ist besonders n}tzlich um den Programmablauf zu verfolgen. Ausgegeben wird im Standard Disassemble Ausgabeformat wie beim
Befehl beschrieben.
Beispiel:
Zeigt der Programmz{hler auf $0404, k|nnte die Ausgabe mit
folgenderma~en aussehen:
address label plus offset disassembly
0400 ProgStar lda #$C0
0402 ProgStar+$02 sta dispBuff
0404 ProgStar+$04 > lda #$04
0406 ProgStar+$06 sta r0h
0408 ProgStar+$08 lda #$28
Hinweis: Da der
Befehl Anweisungen anzeigen mu~ die, vor der im Programmz{hler aufgef}hrten Speicherstelle liegen, kann es sein, da~ weniger Informationen vorliegen als angezeigt werden k|nnten. Der Super-Debugger hat einen hochentwickelten Algorithmus der dies ber}cksichtigt, als ob genug Code vor und hinter dem Programmz{hler vorliegen w}rde.
Siehe auch:
@w, dis, pc.
Befehl:
Mini: siehe
im Kapitel 9.
Zweck: disassembliert ein Window an Code beim Programmz{hler. Zeigt f}nf Zeilen Code an, beginnend an der
Stelle auf die der Programmz{hler zeigt.
Anwendung:
Hinweis: keine Parameter.
Befehl disassembliert f}nf Zeilen Code beginnend mit der Stelle auf die der Programmz{hler zeigt. Er ist n}tzlich um Anweisungen einzusehen die abgearbeitet werden sollen. Ausgegeben wird im Standard Disassemble Ausgabeformat wie beim
Befehl beschrieben.
Beispiel:
Zeigt der Programmz{hler auf $0404, k|nnte die Ausgabe mit
folgenderma~en aussehen:
address label plus offset disassembly
0404 ProgStar+$04 > lda #$04
0406 ProgStar+$06 sta r0h
0408 ProgStar+$08 lda #$28
040A ProgStar+$0A sta r0l
040C ProgStar+$0C jsr Graphics
Siehe auch:
@n, dis, pc.
Befehl:
Zweck: disassembliert einen Bildschirm an Code.
Anwendung:
@dis
Paddrexp
Hinweis:
Paddrexp
ist die Startadresse f}r den disassemblierten Text. Der Wert des aktuellen Standortz{hlers
@u.lc
) wird benutzt, wenn keine Adresse festgelegt wurde.
@dis
Befehl disassembliert einen Bildschirm an Code. Ausgegeben wird im Standard Ausgabeformat wie beim
Befehl beschrieben.
Beispiel:
Vorausgesetzt
@ProgStar
ist ein Label, da~ in der Symboltabelle mit $400 definiert wurde, wird mit
@dis ProgStar
folgendes ausgegeben:
address label plus offset disassembly
0400 ProgStar lda #$C0
0402 ProgStar+$02 sta dispBuff
0404 ProgStar+$04 > lda #$04
0406 ProgStar+$06 sta r0h
0408 ProgStar+$08 b lda #$28
040A ProgStar+$0A sta r0l
040C ProgStar+$0C jsr Graphics
040F ProgStar+$0F lda #$04
0411 ProgStar+$11 sta r0h
0413 ProgStar+$13 lda #$33
0415 ProgStar+$15 sta r01
0417 ProgStar+$17 lda #$00
0419 ProgStar+$19 jsr DoMenu
041C ProgStar+$1C lda #$04
041E ProgStar+$1E sta r0h
0420 ProgStar+$20 lda #$85
0422 ProgStar+$22 sta r0l
0424 ProgStar+$24 jsr DoIcons
0427 ProgStar+$27 rts
0428 ClearScr ora r0l
Hinweis: Der
@dis
Befehl setzt den Programmz{hler (u.lc) auf die Anweisung die der zuletzt disassemblierten folgt. So kann mit einem anschlie~enden
@dis
(ohne Parameter) der folgende Code disassembliert werden.
Siehe auch:
@n, w, pc.
Befehl:
@print
Abkzg.:
Zweck: allgemeine Anwendung, Ausdr}cke, Strings und Symbole ausgeben.
Anwendung:
@print
Pprintitem
Pprintitem
Hinweis:
Pprintitem
ist ein komplexer Ausdruck der unten beschrieben wird. Sie k|nnen bis zu zehn
Pprintitem
s (Druckelement) verwenden.
@print
Befehl ist eine m{chtige und sehr n}tzliche Erweiterung. In seiner einfachsten Form, ist er sehr n}tzlich beim Auswerten von Ausdr}cken und Symbolen, und beim ]bertragen in eine andere Zahlenbasis. Wegen seines Entwicklungsstandes, kann er f}r sehr vielf{ltige Ausgabevarianten, solche wie beim
@dir
Befehl verwendet werden.
@Kurzanweisung f}r die Anwendung von print
Da der
@print
Befehl so hochentwickelt ist, werden die n}tzlichsten Anwendungen erkl{rt.
Um einen String am Bildschirm auszugeben (n}tzlich in einem Makro), schlie~en sie den Text in Anf}hrungszeichen ein:
@print " This string will be printed "
Um das Ergebnis eines Ausdrucks im Vorgabezahlen-Kursiv System auszugeben, benutzen sie einen Ausdruck als einzigen Parameter:
@print ($1000+symbase) l $8000
print .65536/.16
Um das Ergebnis eines Ausdrucks in einem beliebigen Zahlensystem auszugeben, setzen sie ans Ende einenDoppelpunkt und dann das Zahlensystemsymbol:
@print ($1000+symbase) l $8000:%
Ergebnis bin{r (%)
print .65536/.16:s
gibt als Symbole aus.
Das sind die wichtigsten Grundlagen des
@print
Befehls. Die vollst{ndige Beschreibung des Befehls folgt:
@print Syntax
Das Paramterformat des
@print
Befehls folgt der folgenden Syntax:
printitem
Pstring
Pprintexp
printexp
Pprintoption
printoption (
Pnamestring
Plookup
Pradix
optionaler FormatierungsCode
namestring
string
zu Beginn wird ein String ausgegeben, der den Standardtitel ersetzt
lookup
Pdecnum
) datasize
Um Bytes oder Words an der Adresse des Ausdrucks aufzurufen.
decnum
eine dezimale Zahl ohne Vorzeichen; benutzt i.V. mit
Pdatasize
um die Anzahle Bytes oder Words
festzulegen, die an der Adresse des Ausdrucks, angezeigt werden sollen.
datasize
ein Spezifikationssymbol, das die Anzahl der anzuzeigenden Daten enth{lt: entweder Byte oder Word.
Die Anzahl der Bytes oder Words, wie von
Pdecnum
festgelegt, werden am Bildschirm angezeigt, ab
der Adresse des Ausdrucks.
radix
@ l $ l % l s l '
legt das Ausgabezahlensystem fest:
dezimal
hexadezimal
oktal
bin{r
Zeichen
Symbol + Offset (wenn m|glich)
Beispiele:
@print $5F4A:.
zeigt $5F4A dezimalzahl an.
@print.1000+?20:s
zeigt das Ergebnis von
@.1000
plus
@?20
in Symbolform an.
@print
@registers:
@,r.a,r.x,r.y
gibt den String aus, gefolgt vom Inhalt der Register, Akku, X-Register und Y-Register.
print u.lc:16b$
gibt, beginnend mit der aktuellen Adresse, 16 Bytes hexadezimal aus.
@print ibuffer:30b
@Text input buffer:
gibt, beginnend an der Adresse des Symbols
inbuffer
30 Zeichen und den Namen 'Text input buffer' aus.
HOpenModus
Befehl:
Mini: siehe
in Kapitel 9.
Zweck: Speicher |ffnen zur Arbeit mit Maschinensprachecode.
Anwendung:
Paddrexp
Hinweis:
Paddrexp
ist die Speicheradresse die ge|ffnet werden soll. Ohne Paramterer wird die aktuelle Adresse
ge|ffnet, auf die der (u.lc) Standortz{hler zeigt.
Befehl ist der allgemeine Befehl der zum disassemblieren, assemblieren und modifizieren verwendet wird. Wenn sie eine Speicherstelle mit
|ffnen, werden sie in einen wechselwirkenden Modus versetzt, in dem alle Tastatureingaben auf spezielle Art ausgewertet werden. Im
Modus k|nnen sie Code vorw{rts und r}ckw{rts disassemblieren, Labels definieren und Anweisungen }berall modifizieren.
Die Ausgabe mit dem
Befehl erfolgt im folgenden allgemeinen Format, obwohl bestimmte Felder evtl. mit anderen Inhalten ausgegeben werden, wenn sie die Vorgabewerte mit dem
Befehl ge{ndert haben:
address label plus offset disassembly
0400 ProgStar lda #$C0
0402 ProgStar+$02 sta dispBuff
0404 ProgStar+$04 > lda #$04
0406 ProgStar+$06 sta r0h
0408 ProgStar+$08 b lda #$28
040A ProgStar+$0A * sta r0l
hex address
ist die absolute Adresse der Anweisung. Anweisungen sind entweder ein, zwei oder drei Bytes lang.
PLabel plus Offset
ist entweder ein Label mit einem positiven Ein-Byte Offset (
FF) oder die aboslute Adresse, wenn kein r}ckw{rtsweisendes Label im Bereich bis
FF vorhanden ist. Wenn sie Labels mit dem
Befehl (option 2) desaktivieren oder sie wechslen die Anzeige mit der C open-mode Taste, enth{lt dieses Feld dann die hexadezimalen Bytes die die Anweisung beinhaltet, wie im folgenden Beispiel:
0408 A9 28 lda #$28
wobei
der hexadezimale Wert von
ist, und 28 der hexadezimale Wert f}r #$28.
@flag
ist ein Feld mit 3 Positionen, jedes mit eigenem Symbol:
b Breakpoint setzen, bei dieser Anweisung
> der Programmz{hler zeigt auf diese Anweisung
* aktuelle ge|ffnete Anweisung
@disassembly
sind die disassemblierten Bytes an dieser Adresse. Wenn an der Stelle kein 6502 Opcode steht, wird ??? angezeigt.
@Open a-mode Tastatureingaben
Wenn der Speicher mit dem
Befehl ge|ffnet wurde, }bernimmt Super-Debugger die Kontrolle }ber die Tastatureingaben. Im Fall einer falschen Tastatureingabe erscheint der Cursor als blinkendes
@a ?
Symbol. Wenn der Cursor auf dem Asterik im
@flag
-Feld steht, sind folgende Tastatureingaben erlaubt:
@space
'deposit mode' eingeben, an dieser Stelle ('deposit mode' siehe 8-31)
@l I oder J
aktuelle Anweisung schlie~en und n{chste Anweisung |ffnen.
@SHIFT + l l
oder K
aktuelle Anweisung schlie~en und vorangehende Anweisung |ffnen
aktuelle Anweisung nochmals |ffnen
@RETURN
aktuelle Anweisung schlie~en und zum Bereitschaftszeichen zur}ckkehren.
m vom a-Modus in den m-Modus umschalten. Siehe m-Befehl
Anzeige dezimal.
$ Anzeige hexadezimal.
? Anzeige oktal.
% Anzeige bin{r.
Hinweis: Wordwerte werden hexadezimal angezeigt, da Words Lo/Hi, bin{r angezeigt selten n}tzlich
sind.
' Anzeige als Zeichen.
S Anzeige in Symbolform.
C Status wechseln: Label aktiv/nicht aktiv (Beschreibung bei opt 2 unter
B an dieser Adresse einen Breakpoint setzen.
> den Programmz{hler auf diese Adresse setzen.
L l l |ffnen an der n{chsten Adresse mit Label.
L SHIFT + l l |ffnen an der vorangehenden Adresse mit Label.
L - das angezeigte aktuelle Label l|schen, auch dann wenn es als Offset angezeigt wird. Wenn dasselbe
Label in mehreren Modulen existiert, wird das Label nur im Modul mit der h|chsten Priorit{t gel|scht.